<?php
namespace pay\huifubao;

class RequestHandler {
    private $cfg;
    function __construct() {
        $this->cfg = new Config();
    }
    
    /**
    * 创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。
    */
    function createSign($list) {
        $signStr = '';
	$signStr = $signStr . 'merchantId=' . $list['merchantId'];
	$signStr = $signStr . '&merchantOrderNo=' . $list['merchantOrderNo'];
	$signStr = $signStr . '&merchantUserId=' . $list['merchantUserId'];
	$signStr = $signStr . '&notifyUrl=' . $list['notifyUrl'];
	$signStr = $signStr . '&payAmount=' . $list['payAmount'];
	$signStr = $signStr . '&productCode=' . $list['productCode'];
	$signStr = $signStr . '&version=' . $list['version'];
	$signStr = $signStr . '&key=' . $this->cfg->C('ebankMd5key');
        dump($signStr);
        $sign = md5($signStr);
        return $sign;
    }

    /**
     * 使用post的传输
     */
    function curl($url, $data) {

        // 启动一个CURL会话
        $ch = curl_init();
        // 设置curl允许执行的最长秒数
        curl_setopt($ch, CURLOPT_TIMEOUT, 120);
        // 忽略证书
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        // 获取的信息以文件流的形式返回，而不是直接输出。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        // 发送一个常规的POST请求。
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); // http_build_query 生成 URL-encode 之后的请求字符串
        curl_setopt($ch, CURLOPT_HEADER, 0); // 是否需要头部信息（否）
        // 执行操作
        $result = curl_exec($ch);
        if($result) {
            curl_close($ch);
            // 将返回json转换为数组
            $arrResult = json_decode($result, true);
//            if(!is_array($arrResult)) {
//                $arrResult['errcode']=1;
//                $arrResult['msg']='服务器繁忙，请稍候重试';
//            }
        } else {
            $arrResult = curl_error($ch);
            curl_close($ch);
//            $arrResult['errcode']=1;
//            $arrResult['msg']='服务器繁忙，请稍候重试';
        }
        // 返回数据
        return $arrResult;
    }
}

